home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 26
/
AMIGAplus Sonderheft 26 (2000)(Falke)(DE)(Track 1 of 2)[!].iso
/
Tools
/
Packer
/
PPCUnACE
/
Src
/
uac_sys.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-03-29
|
3KB
|
125 lines
/* ------------------------------------------------------------------------ */
/* */
/* Some basic things. */
/* */
/* ------------------------------------------------------------------------ */
#include "os.h"
#include <signal.h> // signal()
#include <stdio.h> // fprintf() fflush() getch() putc()
#if defined(DOS) || defined(WINNT) || defined(WIN16) || defined (VA_CPP)
#include <conio.h> // getch()
#endif
#if defined(DOS)
#include <dos.h> // delay() sound()
#endif
#ifdef NOSTRICMP
#include <ctype.h> // tolower()
#endif
#include "globals.h"
#include "uac_sys.h"
void memset16(USHORT * dest, SHORT val, INT len) // fills short-array with
{ // value
while (len--)
*(dest++) = val;
}
INT cancel(void) // checks whether to interrupt the program
{
#ifdef DOS
while (kbhit())
{
if (getch() == 27)
f_err = ERR_USER;
}
#endif
return (f_err);
}
INT wrask(CHAR * s) // prompt-routine
{
INT ch;
fprintf(stderr, "\n %s (Yes,Always,No,Cancel) ", s);
fflush(stderr);
do
{
ch = getch();
ch = upcase(ch);
}
while (ch != 'Y' && ch != 'A' && ch != 'N' && ch != 'C' && ch != 27)
;
fprintf(stderr, "%s", ch == 'Y' ? "Yes" : (ch == 'A' ? "Always" : (ch == 'N' ? "No" : "Cancel")));
fflush(stderr);
return (ch == 'Y' ? 0 : (ch == 'A' ? 1 : (ch == 'N' ? 2 : 3)));
}
#ifdef NOSTRICMP
INT stricmp( char *arg1, char *arg2 )
{
INT chk;
if ( (!arg2) || (!arg1) )
return 1;
for ( ; *arg1 || *arg2; arg1++, arg2++ )
if ( (chk = tolower(*arg1) - tolower(*arg2)) )
if ( chk < 0 )
return -1;
else
return 1;
return 0;
}
#endif /* NOSTRICMP */
void beep(void) // makes some noise
{
#ifdef DOS
sound(800);
delay(250);
nosound();
#else
putc(0x07, stdout);
#endif
}
void my_signalhandler(INT sig_number) // sets f_err if ctrl+c or ctrl+brk
{
f_err = ERR_USER;
printf("\nUser break\n");
}
#ifdef DOS // handles hardware errors
#ifdef __BORLANDC__
INT harderrhandler(UINT deverr, UINT errc, UINT * devhdr)
#else
INT __far harderrhandler(UINT deverr, UINT errc, UINT __far * devhdr)
#endif
{
f_criterr = 'A' + deverr & 0xff;
f_err = ERR_OTHER;
return (0x3);
}
#endif
void set_handler(void) // initializes handlers
{
#if defined(DOS) && !defined(__BORLANDC__)
signal(SIGBREAK, my_signalhandler); // set ctrl-break/-c handlers
#endif
signal(SIGINT, my_signalhandler);
#if defined(DOS) && !defined(__CONSOLE__) // set hardware error handler
#ifdef __BORLANDC__
harderr(harderrhandler);
#else
_harderr(harderrhandler);
#endif
#endif
}